@echo off
:: 检查是否具有管理员权限
net session >nul 2>&1
if %errorLevel% neq 0 (
    echo 需要管理员权限才能运行此脚本。
    echo 正在请求管理员权限...
    
    :: 自动请求管理员权限
    powershell -Command "Start-Process -FilePath '%~dpnx0' -Verb RunAs"
    exit /b
)

echo 正在以管理员权限运行...

:: 检查端口占用情况
echo 检查端口5000和5001是否被占用...
netstat -ano | findstr :5000
if %errorlevel% equ 0 (
    echo 端口5000被占用，正在尝试释放...
    for /f "tokens=5" %%a in ('netstat -ano ^| findstr :5000') do (
        echo 正在终止进程 PID: %%a
        taskkill /F /PID %%a
    )
    :: 等待1秒，确保进程已经完全终止
    timeout /t 1 /nobreak >nul
) else (
    echo 端口5000未被占用。
)

netstat -ano | findstr :5001
if %errorlevel% equ 0 (
    echo 端口5001被占用，正在尝试释放...
    for /f "tokens=5" %%a in ('netstat -ano ^| findstr :5001') do (
        echo 正在终止进程 PID: %%a
        taskkill /F /PID %%a
    )
    :: 等待1秒，确保进程已经完全终止
    timeout /t 1 /nobreak >nul
) else (
    echo 端口5001未被占用。
)

:: 确保开发环境配置
echo 配置开发环境...
dotnet dev-certs https --clean
dotnet dev-certs https --trust

:: 切换到应用目录并以管理员权限启动应用
cd /d "%~dp0"
echo 正在启动应用程序...
echo 当前目录: %CD%

:: 设置ASP.NET Core环境变量
set ASPNETCORE_ENVIRONMENT=Development
set ASPNETCORE_URLS=http://localhost:5000;https://localhost:5001

:: 启动应用，使用HTTP和HTTPS
dotnet run --urls="http://localhost:5000;https://localhost:5001" --no-launch-profile

echo 应用程序已退出，按任意键关闭窗口...
pause 